package ms;

import java.util.Scanner;

public class NumericKeypad {

	// 建立一张能否到达的表
	public static final char[][] chk = { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
			{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 0, 1, 1, 0, 1, 1, 0, 1, 1 },
			{ 0, 0, 0, 1, 0, 0, 1, 0, 0, 1 }, { 1, 0, 0, 0, 1, 1, 1, 1, 1, 1 },
			{ 1, 0, 0, 0, 0, 1, 1, 0, 1, 1 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 1 },
			{ 1, 0, 0, 0, 0, 0, 0, 1, 1, 1 }, { 1, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
			{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 } };

	public static void main(String[] args) {
		char[] number;
		Scanner scanner = new Scanner(System.in);
		int p, r;
		int j;
		int testCase = scanner.nextInt();
		scanner.nextLine();
		int count = 1;
		while (count <= testCase) {
			number = scanner.nextLine().toCharArray();
//			int change = 1;
			while (true) {
				for (j = 1; j < number.length; j++) {
					p = number[j - 1] - '0';// 获取前一个数字
					r = number[j] - '0';// 获取当前数字
					if (chk[p][r] != 1)// 查表，不满足条件
						break;
				}
				//如果j < number.length，说明j是不可达的
				if (j < number.length) {
					subtrc(number, j);
//					System.out.println("第" + change + "次修改 : " + String.valueOf(number));
//					change++;
				} else {
					System.out.println(String.valueOf(number));
					break;
				}
			}
			count++;
		}
		scanner.close();
	}

	//这个方法才是重点
	public static void subtrc(char a[], int k) {// 剪枝，从位置k开始修改数字，而不是从末尾开始每次只减少1
		int jw;// 借位
		jw = -1;
		for (int i = k; i >= 0 && jw != 0; i--) {
			if (a[i] - '0' > 0) {
				//每一次在第j位减1，比如359，第一次修改是349，第二次修改是339
				a[i] += jw;
				jw = 0;
			} else {
				//如果是'0'的话，改成’9‘ ，不是很懂jw的意思
				//哦，我明白了，比如 309 第二位 i（对应的index是1）是不可达的，
				//将i改成9了之后，要将上一位减1
				//于是变成了299
				a[i] = '9';
				jw = -1;
			}
			//这个的意思应该是99999...是最大的
			for (int j = i + 1; j < a.length; j++)
				// 只要修改了还没到末尾数字，都需要将后面的置为9
				a[j] = '9';
		}
	}
}
